
$(function(){

    var shopping_cart_list = $("#shopping_cart_list");
    var shoppingManager = ShoppingManager(shopping_cart_list);
    var cartAjaxOperator = new CartAjaxOperator();
    var cartRenderer = new CartRenderer();
    var orderItem = new OrderItem();
    var pagePath = $("#pagePath").val();
   /* var foodCardManager = new FoodCardManager();*/
    //定义一个购物车对象
   /* function add_OrderItem(btn){
    alert("hello...");
    } 
    */
    $("#shopping_cart_position").on("click",function(){
        shoppingManager.updateCartsInfo();
    }); 
        
    //shopping_cart_list 是购物车的坐标
    function ShoppingManager(shopping_cart_list){
        //属性
        var obj = {};

        //点击购物车图片的时候，从session中拿到购物车的信息
        obj.updateCartsInfo = function(){
            cartAjaxOperator.loadItemsFromSession(cartRenderer.renderCart);
        };
        

        
        return obj;
    };
    
    // 购物车里面的条目： OrderItem
    function OrderItem(){
        var id;
        var total;
        var name;
        var price;
        var img;
        var merchantName;
        var subTotalMoney;
    };


    // 该对象负责购物车 前后台 数据的交互
    function CartAjaxOperator(){
        var obj = {};
        
        //从 session 中load 出购物车所需要的item信息
        obj.loadItemsFromSession = function(onSuccess){
            $.ajax({
                url: "../orderItems",
                type: "GET",
                dataType: "json"
            }).done(function(items){
                onSuccess(items);  ////真正执行的回调函数： 刷新购物车面板
            });    
        };

        // 点击了购物车中的 + 按钮
        obj.plusOneItemToCart = function(newItemJson, onSuccess){
            $.ajax({
                url: "../orderItems",
                type: "PATCH",
                data: newItemJson,
                dataType: "json",
                contentType: "application/json"
            }).done(function(items){
                onSuccess(items);
            });
        };

        // 点击了购物车中的 - 按钮
        obj.minusOneItemToCart = function(newItemJson, onSuccess){
            $.ajax({
                url: "../orderItems",
                type: "DELETE",
                data: newItemJson,
                dataType: "json",
                contentType: "application/json"
            }).done(function(items){
                onSuccess(items);
            });
        }
        
        //点击 食品卡 下面的 ”加入购物车“ 按钮
        obj.addFoodToCart = function(newItemJson, onSuccess){
            $.ajax({
                // url: "addFoodToCart?newItemJson=" +encodeURI(encodeURI(newItemJson)),
                // type: "POST"
                url: "../orderItems",
                type:"POST",
                data:newItemJson,
                contentType:"application/json"
            }).done(function(items){
                alert("请先登录");
               if(items == 'filter'){
                    window.location=pagePath + "/login.jsp";
                }
            });
        }

        obj.delItemFromCart = function(foodId, onSuccess){
            $.ajax({
                url: '../orderItems/'+foodId,
                type:"DELETE",
                dataType: "json"
            }).done(function(items){
                onSuccess(items);
            });
        }

        obj.clearAllItemsInCart = function(){
            $.ajax({
                url: "./clearAllItemsInCart",
                type:"POST"
            }).done(function(){

            });
        }

        //点击了 购物车 checkout 按钮
        obj.chechOutOrderInfo = function(){
            $.ajax({
                url: "../orderInfos",
                type: "GET",
                dataType: "json"
            }).done(function(){

            });
        }
        return obj;
    };
    
    // 购物车渲染器
    function CartRenderer(){
        var obj = {};
        //购物车渲染器: 需要提供完整的item 信息：食品名，单价，数量，图片信息；
        obj.renderCart = function(data){
            shopping_cart_list.empty();
            $.each(data, function(index, orderItemVO){
                let cart_html = '<li id="test">'+
                                        '<div class="media">'+
                                            '<div class="media-left">'+
                                                '<a href="#">'+
                                                    '<img class="media-object" src='+orderItemVO.img +' width="50" alt="...">'+
                                                '</a>'+
                                            '</div>'+
                                            '<div class="media-body">'+
                                                '<h4 class="product-name">'+ orderItemVO.name +'</h4>'+
                                                '<p>'+orderItemVO.price+'*'+orderItemVO.total+'='+orderItemVO.subTotalMoney+
                                                    '<span></span> '+
                                                    '<i id="remove_cart_item" class="fa fa-remove"></i>'+
                                                '</p>'+
                                                
                                                '<button id="shopping_cart_minus" class="btn btn-default btn-xs shopping_cart_minus">-</button>'+
                                                '<input id="food_count" style="width:30px;text-align:center;font-size:5px;line-height: 1.3em;" type="text" value='+orderItemVO.total+'> </input>'+   
                                                '<button id="shopping_cart_plus" class="btn btn-default btn-xs shopping_cart_plus">+</button> '+
                                                '<input id="item_merchandiseId" type="hidden" value='+orderItemVO.id+'></input>'+
                                            '</div>'+
                                        '</div>'+
                                '</li> ';

                shopping_cart_list.append($.parseHTML(cart_html));
            });


        };    
        
        return obj;
    
    }

    
    /*各种监听function*/
    // $("#shopping_cart_checkout").on("click", function(event){
    //     //cartAjaxOperator.chechOutOrderInfo();
    //     //以下代码应该跳到清算的页面
    //     // let childrenLength = $(event.target).parent().parent().parent().children(":first").children().length;
    //     // if(childrenLength > 0){
    //     //     shopping_cart_list.empty();
    //     //     cartAjaxOperator.clearAllItemsInCart();
    //     // }
    //     return;
    // });



    $("#merchants_food_Info").on("click",function(event){
        if(event.target.id == "add_food_to_cart"){
            let newItem = new OrderItem(); //封装为一个新的购物车条目对象
            var siblings = $(event.target).parent().siblings();
            newItem.name = $(siblings).eq(0).text().trim();

            let reg=/[\u4E00-\u9FA5]/g;
            let price = $(siblings).eq(1).text().replace(reg,'').replace("/","").trim();//string   
            newItem.price = price;

            newItem.id = $(siblings).eq(2).val().trim();
            newItem.merchantName = $(siblings).eq(3).val().trim();
            newItem.total = $(siblings).eq(5).val().trim();
            let product_caption_siblings = $(event.target).parent().parent().siblings();
            newItem.img = product_caption_siblings.eq(0).children(":first").attr("src").trim();
            newItem.subTotalMoney=eval(newItem.price * newItem.total);
            

            //食品卡片位置
             let  food_detail_info = $(event.target).parent().parent().parent().parent();
            var x=food_detail_info.offset().left;
            var y=food_detail_info.offset().top; 
       
            
       
            //shopping_cart_position 购物车位置
            var cartt=$("#header_of_shopping_cart");
            var xt=cartt.offset().left;  //购物车位置
            var yt=cartt.offset().top;

           /*生成购物车的动画*/     
             food_detail_info.clone().css("position","absolute").css("left",x).css("top",y)
                .appendTo($("#header_of_shopping_cart")).animate({left:xt,top:yt,opacity:0},800,
            function(){
               cartAjaxOperator.addFoodToCart(JSON.stringify(newItem));
            });
                

    }
    });

    //购物车一栏增加 + 事件
    shopping_cart_list.on("click",function(event){
        if(event.target.id == "shopping_cart_plus"){
            let newItem = new OrderItem(); //封装为一个新的购物车条目对象
            newItem.name = $(event.target).parent().find("h4").text();
            newItem.total = $(event.target).prev().val();
            newItem.id = $(event.target).next().val();
            let newItemJson = JSON.stringify(newItem);
            cartAjaxOperator.plusOneItemToCart(newItemJson, cartRenderer.renderCart);
        };

    });


    //购物车一栏减少 - 事件
    shopping_cart_list.on("click",function(event){
        if(event.target.id == "shopping_cart_minus"){
        	 let newItem = new OrderItem(); //封装为一个新的购物车条目对象
             newItem.name = $(event.target).parent().find("h4").text();
             newItem.total = $(event.target).next().val();
             newItem.id = $(event.target).next().next().next().val();
             if(newItem.total <= 0){
                return;
             }
             let newItemJson = JSON.stringify(newItem);
             cartAjaxOperator.minusOneItemToCart(newItemJson, cartRenderer.renderCart);

        }
    });

    //从 购物车 中删除 一条商品信息
    shopping_cart_list.on("click",function(event){
        if(event.target.id == "remove_cart_item"){
            let itemIndex = $(event.target).parent().parent().parent().parent();
            let merchandiseId = $(event.target).parent().siblings().eq(4).val();
            cartAjaxOperator.delItemFromCart(merchandiseId, cartRenderer.renderCart);
            itemIndex.remove();
        }
    });



     /* 食品图片中的增加 */ 
     $(".plus").on("click",function(){
        var numIpt=$(this).prev();
        var num=numIpt.val();
        num++;
        numIpt.val(num.toString());
    });
            
    /* 食品图片中的删除 */  
    $(".minus").on("click",function(){
        var numIpt=$(this).next();
        var num=numIpt.val();
        if(num>0)
        num--;
        numIpt.val(num.toString());
    });
            
});